/**
 * 
 * 起迪科技 Copyright (c) 2014-2018 QiDi,Inc.All Rights Reserved.
 */
package cn.qidisoft.edu.hzjt.utils;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import cn.qidisoft.core.common.context.ApplicationContextConfigUtil;
import cn.qidisoft.core.util.StringUtils;

/**
 * 
 * @author hxq
 * @version $Id: SyncValdateJson.java, v 0.1 2018年3月26日 下午3:19:11 hxq Exp $
 */
public class SyncValdateJson {
  private static String syncSecretkey = null;

  static {
    syncSecretkey = ApplicationContextConfigUtil.getString("sync_secret_key", null);
  }

  /**
   * 对传的参数json进行校验
   * 
   * @param syncpracticejson
   * @param practiceJson
   */
  public static boolean SyncValdateJson(String secretKey, String objJson,
      Map<String, Object> dataMap) {

    try {
      if (StringUtils.isNullValue(secretKey) || StringUtils.isNullValue(objJson)) {
        dataMap.put("status", "error");
        dataMap.put("msg", "参数秘钥或json不能为空,请您核查您的秘钥或json是否不为空!");
        return false;
      }
      if (!syncSecretkey.equals(secretKey)) {
        dataMap.put("status", "error");
        dataMap.put("msg", "参数秘钥未授权,请您核查您的秘钥是否正确!");
        return false;
      }
      if (isValidateJson(objJson) == false) {
        dataMap.put("status", "error");
        dataMap.put("msg", "参数格式错误,请您核查传的格式是否json格式!");
        return false;
      }
      return true;
    } catch (Exception e) {
      dataMap.put("status", "error");
      dataMap.put("msg", "获取参数时出现异常");
      return false;
    }

  }

  /**
   * 验证验证信息
   * 
   * @param secretKey
   * @param dataMap
   * @return
   */
  public static boolean SyncValdateSecret(String secretKey, Map<String, Object> dataMap) {
    try {
      if (StringUtils.isNullValue(secretKey)) {
        dataMap.put("status", "error");
        dataMap.put("msg", "参数秘钥不能为空,请您核查您的秘钥是否不为空!");
        return false;
      }
      if (!syncSecretkey.equals(secretKey)) {
        dataMap.put("status", "error");
        dataMap.put("msg", "参数秘钥未授权,请您核查您的秘钥是否正确!");
        return false;
      }
    } catch (Exception e) {
      e.printStackTrace();
      dataMap.put("status", "error");
      dataMap.put("msg", "获取参数时出现异常");
      return false;
    }
    return true;


  }

  /**
   * 验证参数Json格式是否正确
   * 
   * @param json
   * @return
   */
  public static boolean isValidateJson(String json) {
    if (StringUtils.isNullValue(json)) {
      return false;
    }
    try {
      JSON.parse(json);
      return true;
    } catch (Exception e) {
      e.printStackTrace();
      return false;
    }
  }

  /**
   * 通过json 字符存转换json对象
   * 
   * @param json
   * @return
   */
  public static JSONObject string2Json(String json) {
    try {
      return JSON.parseObject(json);
    } catch (Exception e) {
      return null;
    }

  }

  /**
   * 通过json字符串格式转换成Pojo对象
   * 
   * @param json
   * @param clazz
   * @return
   */
  public static Object parseJsonToBean(String json, Class<?> clazz) {
    try {
      return JSON.parseObject(json, clazz);
    } catch (Exception e) {
      return null;
    }

  }

  /**
   * 通过json字符串获得转换Pojo对象集合
   * 
   * @param json
   * @param clazz
   * @return
   */
  public static Object parseJsonToList(String json, Class<?> clazz) {
    try {
      return JSON.parseArray(json, clazz);
    } catch (Exception e) {
      return null;
    }
  }

  /**
   * 通过对象转换Json
   * 
   * @param object
   * @return
   */
  public static String parseBeanToJson(Object object) {
    try {
      return JSON.toJSONString(object);
    } catch (Exception e) {
      return null;
    }
  }

  /**
   * 
   * 通过集合转换json
   * 
   * @param list
   * @return
   */
  public static String parseListToJson(List<?> list) {
    try {
      return JSON.toJSONString(list);
    } catch (Exception e) {
      return null;
    }

  }

}
